iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
Software Development

Rust的多方面運用系列 第 19

[Day19] 如何在 Yew Wasm 中讀取內容

  • 分享至 

  • xImage
  •  

owo 好像剩下幾天了,時間過得好快
但是我總覺得後面蠻難寫的 我 Rocket 還沒寫
至於 Database 的部份我應該會講 SQLx 避免跟以前的文章撞到
總之,雖然前途感覺布滿了許多荊棘,但是文章還是要繼續寫的,希望至少有佳作 owob


開始今天的內容吧~
這邊先預告一下,之後兩天的內容會是 用 WASM 做凱薩密碼解密器
主要是總結拉,在寫算法時也能夠複習之前的內容 owob
好了 垃圾話講的有點多了。
那今天講的內容是前面沒有利用到的輸入部份
如果有認真看的話會發現說
好像前面的專案 Example 跟 POPCAT 其實都只有運用到值的改動或撰寫
而沒有利用到輸入的部份
但是我覺得,沒有人機互動的東西,絕對不是一個好網站
雖然 POPCAT 某種程度算互動 (?
那麼基本上 如果我要輸入到某個地方
我會用 oninput 這個讓他去即時更新
那要怎麼寫呢

oninput=self.link.callback(|input: InputData|Msg::Payload(input.value))

本行出自 Yew Example 的 JS callback
那這邊這行其實是使用 textarea 去建構的
至於使用其實跟我們昨天講的差不多
差別在多了一個 InputData
而這個 InputData 其中的 value 就會存著整個輸入框中的值
但是要記得的一點是 他回傳的是 String
這點格外重要
即使是使用 html 裡面的 type = "number"
還是一樣會回傳 String 所以在使用時記得對回傳的值進行轉型
那怎麼轉型呢 這其實是我之前漏講的東西
Rust STD Docs
這是轉型用法的 Docs 建議去看看
那他的形式

pub fn parse<F>(&self) -> Result<F, <F as FromStr>::Err>

會看到說 他將 self 傳入然後 F 是我們之前講到的泛型
也就是說會回傳 F 形式的值
但是要記得他回傳是 Result 所以要用 .unwrap() 去拿到他並非 Error 的時候的值
喔對 而且 當你輸入非數字以外的字串 他會回傳 Error 喔
EX:

let oao = "owo".parse<i32>();
if oao.is_err() {
    print!("Yes");
}

也就是回傳 Err
OK 然後該來講要怎麼處理弄出來的東東了
之前列舉有講過
列舉是可以帶值的
所以代表說可以利用這點去傳入值

enum Msg {
    Str(String),
    Num(i32),
}

可以這樣寫
那麼 match 的時候就要這樣寫了

Msg::Str(str) => {
    self.str = str.clone();
    true
}
Msg::Num(num) => {
    self.num = num;
    true
}

然後要記得喔
傳入的時候記得以 enum 你設定的類型去做傳入


好了 那今天差不多講到這邊
然後最後補上之前沒有講的 Trunk 設定
可以直接在根目錄 去創建一個 Trunk.toml 去設定喔
Trunk


上一篇
[Day18] POPCAT in WASM (Part 2)
下一篇
[Day20] Yew WASM 凱薩密碼簡介以及加密
系列文
Rust的多方面運用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言